home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 2005 October
/
PCWOCT05.iso
/
Software
/
FromTheMag
/
Ant Movie Catalog 3.5.0.2
/
amc_install.exe
/
{app}
/
Scripts
/
ozon.ru.ifs
< prev
next >
Wrap
Text File
|
2005-03-13
|
8KB
|
275 lines
(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=Yuri Vlasov (<link>wildfish@mail.ru</link>)
Title=OZON.RU
Description=Import data & picture from OZON.RU
Site=www.ozon.ru
Language=RU
Version=1.1 (08.02.2005)
Requires=3.5.0
Comments=OZON.RU ±εΣσ≡µΦ≥ επ≡ε∞φεσ ΩεδΦ≈σ±≥Γε ε∩Φ±αφΦΘ ⌠Φδⁿ∞εΓ ∩δ■± ±α∞≤■ ßεδⁿ°≤■ Γ ≡≤φσ≥σ ΩεδδσΩ÷Φ■ ßεδⁿ°Φ⌡ εßδεµσΩ Ω ⌠Φδⁿ∞α∞
License=
GetInfo=1
[Options]
***************************************************)
program ozon_ru;
const
BaseAddress = 'http://www.ozon.ru/';
var
MovieName: string;
//==============================================================================
procedure AnalyzePage(Address: string);
var
Page: TStringList;
LineNr: Integer;
Line: string;
TextBlock: string;
BeginPos, EndPos: Integer;
s: string;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
if pos('<TITLE>╬╟╬═ - ╨στ≤δⁿ≥α≥√ ∩εΦ±Ωα</TITLE>', Page.Text) = 0 then
begin
if CanSetField(fieldURL) then
SetField(fieldURL, Address);
AnalyzeVideoPage(Page);
end
else
begin
PickTreeClear;
LineNr := FindLine('═αΘΣσφε ', Page, 0);
if LineNr > -1 then
begin
PickTreeAdd('╘Φδⁿ∞√', '');
AddMoviesTitles(Page, LineNr);
end;
LineNr := FindLine('╤≥≡αφΦ÷α:', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
BeginPos := Pos('╤≥≡αφΦ÷α 2" href="', Line) + Length('╤≥≡αφΦ÷α 2" href="');
EndPos := Pos('>2</a>', Line);
s := Copy(Line, BeginPos, EndPos - BeginPos);
PickTreeMoreLink(BaseAddress + s);
end;
if PickTreeExec(Address) then
AnalyzePage(Address);
end;
Page.Free;
end;
//==============================================================================
function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
i: Integer;
begin
Result := -1;
if StartAt < 0 then
StartAt := 0;
for i := StartAt to List.Count-1 do
if Pos(AnsiUpperCase(Pattern), AnsiUpperCase(List.GetString(i))) <> 0 then
begin
result := i;
Break;
end;
end;
//==============================================================================
procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
var
Line: string;
MovieTitle, MovieAddress, s: string;
StartPos, EndPos: Integer;
begin
repeat
Line := Page.GetString(LineNr);
StartPos := Pos('class="big1">', Line);
if StartPos > 0 then
begin
StartPos := Pos('<a href="/context/detail/id/', Line);
if StartPos > 0 then
begin
StartPos := StartPos + Length('<a href="');
MovieAddress := Copy(Line, StartPos, pos('" class=', Line) - StartPos);
StartPos := pos('">', Line) + Length('">');
MovieTitle := Copy(Line, StartPos, pos('</a>', Line) - StartPos);
LineNr := LineNr + 1;
Line := Page.GetString(LineNr);
StartPos := pos('<small>', Line) + Length('<small>');
s := Copy(Line, StartPos, pos('</small>', Line) - StartPos);
EndPos := Pos('<br>', s);
if EndPos <> 0 then
begin
MovieTitle := MovieTitle + '(' + Copy(s, 1, EndPos-1) + ')';
Delete (Line, 1, StartPos+EndPos-2);
StartPos := Pos('<br>', Line) + Length('<br>');
end
else
StartPos := 1;
EndPos := Pos('(', Line);
MovieTitle := MovieTitle + ' (' + Copy(Line, StartPos, EndPos-StartPos-1) + ')';
HTMLDecode(MovieTitle);
HTMLRemoveTags(MovieTitle);
PickTreeAdd(MovieTitle, BaseAddress + MovieAddress);
end;
end;
LineNr := LineNr + 1;
until LineNr > Page.Count;
end;
//==============================================================================
function GetText (Line: string; sBegin, sEnd: string): string;
var
BeginPos, EndPos: Integer;
s: string;
begin
Result := '';
BeginPos := Pos(sBegin, Line) + Length(sBegin);
EndPos := Pos(sEnd, Line);
if (BeginPos = 0) then BeginPos := 1;
if (EndPos = 0) then EndPos := Length(Line);
s := Copy(Line, BeginPos, EndPos - BeginPos);
HTMLDecode(s);
HTMLRemoveTags(s);
Result := Trim(s);
end;
//==============================================================================
procedure AnalyzeVideoPage(Page: TStringList);
var
Line, Value, Value2, FullValue: string;
LineNr, MovieLength: Integer;
BeginPos, EndPos: Integer;
MovieName, s: string;
begin
LineNr := FindLine('<TITLE>╬╟╬═ - [', Page, 0);
if LineNr = -1 then exit;
// Title
MovieName := GetText(Page.GetString(LineNr), '<TITLE>╬╟╬═ - [', ']');
if CanSetField(fieldTranslatedTitle) then
SetField(fieldTranslatedTitle, MovieName);
//Original Title
if CanSetField(fieldOriginalTitle) then
begin
LineNr := FindLine('<BIG class="big2">' + MovieName, Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
if Pos('><font color="#666666">', Line) <> 0 then
s := GetText(Line, '><font color="#666666">', '></font>')
else
s := MovieName;
SetField(fieldOriginalTitle, s);
end;
end;
//Year, Length, Country
LineNr := FindLine('╒α≡αΩ≥σ≡Φ±≥ΦΩΦ ΓΦΣσεφε±Φ≥σδσΘ', Page, 0);
if LineNr <> -1 then
begin
Line := Page.GetString(LineNr);
if CanSetField(fieldYear) then
begin
BeginPos := Pos(AnsiUpperCase('╒α≡αΩ≥σ≡Φ±≥ΦΩΦ ΓΦΣσεφε±Φ≥σδσΘ'), AnsiUpperCase(Line)) + Length('╒α≡αΩ≥σ≡Φ±≥ΦΩΦ ΓΦΣσεφε±Φ≥σδσΘ');
EndPos := Pos(AnsiUpperCase('╩Φφε±≥≤ΣΦ '), AnsiUpperCase(Line));
if EndPos = 0 then EndPos := Length(Line);
Line := Copy(Line, BeginPos, EndPos);
SetField(fieldYear, GetText(Line, '<div>', 'π.,'));
end;
s := 'π.,';
Delete (Line, 1, Pos(s, Line)+Length(s)-1);
if CanSetField(fieldLength) then
SetField(fieldLength, GetText(Line, '<B>', '∞Φφ.'));
if CanSetField(fieldCountry) then
begin
s := '∞Φφ.';
Delete (Line, 1, Pos(s, Line)+Length(s));
s := GetText(Line, '</B>', '<br>');
BeginPos := Pos(' ', s);
if BeginPos <> 0 then
begin
BeginPos := BeginPos + 1;
s := Copy(s, BeginPos, Length(s));
end;
SetField(fieldCountry, s);
end;
end;
//Description
if CanSetField(fieldDescription) then
begin
LineNr := FindLine('class="detail_leftcol"', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
s := 'class="vertpadd">';
Delete (Line, 1, Pos(s, Line)+Length(s)-1);
s := GetText(Line, '', '</td></tr>');
SetField(fieldDescription, s);
end;
end;
//Picture
if CanSetPicture then
begin
LineNr := FindLine('document.cover', Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
s := 'document.cover';
Delete (Line, 1, Pos(s, Line) + Length(s)-1);
s := 'small';
Delete (Line, 1, Pos(s, Line) + Length(s)-1);
BeginPos := Pos(',', Line) + 2;
EndPos := Pos('jpg', Line) + 3;
if (BeginPos <> 0) and (EndPos <> 0) then
begin
s := Copy(Line, BeginPos, EndPos - BeginPos);
s := Trim(s);
GetPicture(BaseAddress + s);
end;
end;
end;
//DisplayResults;
end;
//==============================================================================
//==============================================================================
//==============================================================================
begin
if CheckVersion(3,5,0) then
begin
MovieName := GetField(fieldTranslatedTitle);
if MovieName = '' then
MovieName := GetField(fieldOriginalTitle);
if Input('Import from Ozon.ru', 'Enter the title of the movie:', MovieName) then
begin
AnalyzePage('http://www.ozon.ru/?context=video_search_list&searchstring='+UrlEncode(MovieName));
end;
end else
ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
end.